package com.itheima.service.system.Impl;

import com.github.pagehelper.PageHelper;
import com.itheima.domain.store.Company;
import com.itheima.domain.system.Dept;
import com.itheima.mapper.store.CompanyMapper;
import com.itheima.mapper.system.DeptMapper;
import com.itheima.service.system.DeptService;
import com.itheima.utils.MapperUtil;
import com.itheima.utils.UidUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

/**
 * @param
 * @return
 */
public class DeptServiceImpl implements DeptService {
    @Override
    public List<Dept> findByPage(int pageNum, int pageSize) {
        //定义返回值
        List<Dept> list=null;
        //工具类获取执行者对象
        SqlSession session = MapperUtil.getSession();
        //获取持久层接口的代理对象
        DeptMapper mapper = session.getMapper(DeptMapper.class);
        //在查询所有之前先设置分页参数
        PageHelper.startPage(pageNum,pageSize);
        //执行接口中的方法
        list=mapper.findByPage();
        //释放资源
        MapperUtil.close(session);
        return list;
    }

    @Override
    public List<Dept> findAllDept() {
        //定义返回值
        List<Dept> list=null;
        //工具类获取执行者对象
        SqlSession session = MapperUtil.getSession();
        //获取持久层接口的代理对象
        DeptMapper mapper = session.getMapper(DeptMapper.class);
        //执行接口中的方法
        list=mapper.findByPage();
        //释放资源
        MapperUtil.close(session);
        return list;
    }

    @Override
    public int save(Dept dept) {
        //工具类走起
        SqlSession session = MapperUtil.getSession();
        //获取接口代理对象
        DeptMapper mapper = session.getMapper(DeptMapper.class);
        //在这里要使用工具类获取唯一的id，因为id不是用户输入的，而且是varchar类型又不能自增，所以保证其唯一性成了关键，中国工具类就是提供唯一的id字符串
        String uid = UidUtil.getUid();
        dept.setId(uid);
        //执行接口中的新增方法
        int i=mapper.save(dept);
        return i;
    }

    @Override
    public Dept findById(String id) {
        //定义返回值
        Dept dept=null;
        //工具类获取session
        SqlSession session = MapperUtil.getSession();
        //session获取接口代理对象
        DeptMapper mapper = session.getMapper(DeptMapper.class);
        //执行接口中的方法
        dept= mapper.findById(id);
        //释放资源
        MapperUtil.close(session);
        return dept;
    }

    @Override
    public int update(Dept dept) {
        //工具类获取接口代理对象
        SqlSession session = MapperUtil.getSession();
        DeptMapper mapper = session.getMapper(DeptMapper.class);
        //代理对象调用修改方法
        int i =mapper.update(dept);
        //释放资源
        MapperUtil.close(session);
        return i;
    }

    @Override
    public int delete(String id) {
        //工具类走起
        SqlSession session = MapperUtil.getSession();
        DeptMapper mapper = session.getMapper(DeptMapper.class);
        //代理对象调用方法
        int i=mapper.delete(id);
        return i;
    }
}
